#ifndef QOS_MANAGER_H
#define QOS_MANAGER_H

#include "qos_interface.h"

static struct qos_policy_datas default_qos_policy = {
    .policy_type = QOS_POLICY_DEFAULT,
    .policys = {
        {0, 0, 0, 1024},
        {0, 0, 0, 1024},
        {0, 0, 0, 1024},
        {0, 0, 0, 1024},
        {0, 0, 0, 1024},
        {0, 0, 0, 1024},
    }
};

static struct qos_policy_datas foreground_qos_policy = {
    .policy_type = QOS_POLICY_FRONT,
    .policys = {
        {0, 0, 0, 1024},
        {10, 10, 0, 200},
        {5, 5, 0, 250},
        {0, 0, 0, 1024},
        {-5, -5, 300, 1024},
        {-10, -10, 500, 1024},
    }
};

static struct qos_policy_datas background_qos_policy = {
    .policy_type = QOS_POLICY_BACK,
    .policys = {
        {0, 0, 0, 1024},
        {15, 15, 0, 150},
        {10, 10, 0, 200},
        {5, 5, 0, 250},
        {0, 0, 0, 300},
        {-5, -5, 0, 350},
    }
};

static struct qos_policy_datas system_server_qos_policy = {
    .policy_type = QOS_POLICY_SYSTEM_SERVER,
    .policys = {
        {0, 0, 0, 1024},
        {10, 10, 0, 200},
        {5, 5, 0, 250},
        {0, 0, 0, 1024},
        {-5, -5, 300, 1024},
        {-10, -10, 500, 1024},
    }
};

namespace OHOS {
namespace ConcurrentTask {

class QosManager {
public:
    void Init();
    int SetQosPolicy(struct qos_policy_datas *policy_datas);
};

} // namespace ConcurrentTask
} // namespace OHOS

#endif